package com.ruoyi.delivery.mapper;
import com.ruoyi.delivery.domain.DelAllocationOrder;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 运输订单 数据层
 *
 * @author hu
 */
public interface DelAllocationOrderMapper {
    /**
     * 根据条件筛选调拨单（支持分页）
     * @param allocationNo 调拨单号（支持模糊搜索）
     * @param origin 发货地（支持模糊搜索）
     * @param destination 目的地（支持模糊搜索）
     * @param departStartDate 调拨日期范围的起始日期
     * @param departEndDate 调拨日期范围的结束日期
     * @param arriveStartDate 预计到达日期范围的起始日期
     * @param arriveEndDate 预计到达日期范围的结束日期
     * @param state 运单状态
     * @param orderNo 订单号（支持模糊搜索）
     * @param offset 分页偏移量
     * @param pageSize 每页记录数
     * @return 满足条件的调拨列表
     */
    List<DelAllocationOrder> filterAllocationOrders(
            @Param("allocationNo") String allocationNo,
            @Param("origin") String origin,
            @Param("destination") String destination,
            @Param("departStartDate") String departStartDate,
            @Param("departEndDate") String departEndDate,
            @Param("arriveStartDate") String arriveStartDate,
            @Param("arriveEndDate") String arriveEndDate,
            @Param("state") String state,
            @Param("orderNo") String orderNo,
            @Param("offset") int offset,
            @Param("pageSize") int pageSize
    );

    /**
     * 统计运输订单的数量
     *
     * @return 运输订单的总数
     */
    int countOperatorTransportOrders();

    /**
     * 插入运输订单
     * @param order 调拨单对象
     * @return 受影响的行数
     */
    int insertAllocationOrder(DelAllocationOrder order);

    /**
     * 删除运输订单
     * @param allocationNo 调拨单号
     * @return 受影响的行数
     */
    int deleteAllocationOrder(@Param("allocationNo") String allocationNo);

    /**
     * 修改运输订单
     * @param order 调拨单对象
     * @return 受影响的行数
     */
    int updateAllocationOrder(DelAllocationOrder order);

    /**
     * 根据订单号查询仓库编号
     * @param orderNo 订单号
     * @return warehouseNo 仓库编号
     */
    String getWarehouseNoByOrderNo(@Param("orderNo") String orderNo);
}
